package xj.app;

import java.awt.Point;
import java.util.Observer;

public interface DrawTool {

  public void mouseMoved(Observer observer, Point p, int modifiers);

  public void mouseDragged(Observer observer, Point p, int modifiers);

  public void mouseEntered(Observer observer, Point p, int modifiers);

  public void mouseExited(Observer observer, Point p, int modifiers);

  public void mousePressed(Observer observer, Point p, int modifiers);

  public void mouseReleased(Observer observer, Point p, int modifiers);

  public void mouseClicked(Observer observer, Point p, int modifiers,
			   int clickCount);

  public void mouseLButtonPressed(Observer observer, Point p, int modifiers);

  public void mouseLButtonReleased(Observer observer, Point p, int modifiers);

  public void mouseLButtonSingleClicked(Observer observer, Point p,
					int modifiers);

  public void mouseLButtonDoubleClicked(Observer observer, Point p,
					int modifiers);

  public void mouseRButtonPressed(Observer observer, Point p, int modifiers);

  public void mouseRButtonReleased(Observer observer, Point p, int modifiers);

  public void mouseRButtonSingleClicked(Observer observer, Point p,
					int modifiers);

  public void mouseRButtonDoubleClicked(Observer observer, Point p,
					int modifiers);

  public void mouseMButtonPressed(Observer observer, Point p, int modifiers);

  public void mouseMButtonReleased(Observer observer, Point p, int modifiers);

  public void mouseMButtonSingleClicked(Observer observer, Point p,
					int modifiers);

  public void mouseMButtonDoubleClicked(Observer observer, Point p,
					int modifiers);

  public void mouseWheelMoved(Observer observer, Point p, int wheelRotation,
			      int modifiers);

  /**
   * popup trigger: right mouse click (Window/Linux) or ctrl-click (Mac) 
   */
  public void popupTriggered(Observer observer, Point p, int modifiers);

  public void keyTyped(Observer observer, int keyChar, int keyCode,
		       int modifiers);

  public void keyPressed(Observer observer, int keyChar, int keyCode,
			 int modifiers);

  public void keyReleased(Observer observer, int keyChar, int keyCode,
			  int modifiers);

  public boolean onCommand(Observer observer, String cmd);

  public boolean onCommand(Observer observer, String cmd, Object args);

  public void activate(Observer observer);

  public void deactivate(Observer observer);

}
